SHADOW_CONTROL_OP_OFF should be checkign whether shadow mode
authorkaf24@firebug.cl.cam.ac.uk <kaf24@firebug.cl.cam.ac.uk>
Tue, 22 Nov 2005 10:53:45 +0000 (11:53 +0100)
committerkaf24@firebug.cl.cam.ac.uk <kaf24@firebug.cl.cam.ac.uk>
Tue, 22 Nov 2005 10:53:45 +0000 (11:53 +0100)
is actually currently enabled.

Signed-off-by: Keir Fraser <keir@xensource.com>
xen/arch/x86/shadow32.c
xen/arch/x86/shadow_public.c

index 17f4e17ae93fa41b48bf3bbbeab2faf606543715..e340ddf628dd84e648e67dda4369b2e5ecad0e78 100644 (file)
@@ -1381,8 +1381,11 @@ int shadow_mode_control(struct domain *d, dom0_shadow_control_t *sc)
     switch ( op )
     {
     case DOM0_SHADOW_CONTROL_OP_OFF:
-        __shadow_sync_all(d);
-        __shadow_mode_disable(d);
+        if ( shadow_mode_enabled(d) )
+        {
+            __shadow_sync_all(d);
+            __shadow_mode_disable(d);
+        }
         break;
 
     case DOM0_SHADOW_CONTROL_OP_ENABLE_TEST:
index b96e13e64eb769c55e6d4e46e31008d56aedee85..06d5bddb4fdff88713db99fbf84401d01ae5489c 100644 (file)
@@ -1290,8 +1290,11 @@ int shadow_mode_control(struct domain *d, dom0_shadow_control_t *sc)
     switch ( op )
     {
     case DOM0_SHADOW_CONTROL_OP_OFF:
-        __shadow_sync_all(d);
-        __shadow_mode_disable(d);
+        if ( shadow_mode_enabled(d) )
+        {
+            __shadow_sync_all(d);
+            __shadow_mode_disable(d);
+        }
         break;
 
     case DOM0_SHADOW_CONTROL_OP_ENABLE_TEST: